Many distributed applications today rely on session-oriented communication methods, such as TCP/IP, as their primary method of inter-node communication. A typical scenario involves the use of a single socket session between nodes, with this single session providing sufficient bandwidth. There is a class of applications where the bandwidth of a single session can be exhausted as the source node scales up and overdrives either the network capacity, or the target node's ability to offload from the network. Network tuning techniques, such as the configuration of proper TCP/IP send and receive buffer sizes, can help to optimize the single session or single consumer thread approach. A multi-session approach can increase network bandwidth and end-to-end throughput up until the point that the single threaded target nodes capability to offload the network is not exceeded.
However, many distributed applications are architected for a single session approach. In order for the application to adopt a multi-session approach, the architectural design of the application must be modified, which amounts to a rewriting of the application. The rewriting of the application is a non-trivial task that requires significant resources.